<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
            let 变量名 = (形参列表)=>{
                函数体->代码段
                [return val]
            }
        */

        let fn1=()=>{
            console.log("fn1");
        }
        console.log(fn1);
        fn1();


        // 参数特性
        // 没有参数
        let fn2=(...args)=>{  //箭头函数中没有 arguments
            // console.log(arguments); //ReferenceError: arguments is not defined
            console.log(args); //[10, 20, 30, 100, 200]
        }

        fn2(10,20,30,100,200);


        // 多个参数
        let fn3 =(a,b,...args)=>{
            console.log(a,b,args);
        }

        fn3(10,20,30,40);


        // 一个参数
        // let fn4 =(a)=>{  //只有一个参数，可以省略()
        //     console.log(a);
        // }
        // fn4(100);

        let fn4 =a=>{  //只有一个参数，可以省略()
            console.log(a);
        }
        fn4(100);


        // 返回值的特性

        // 1.不省略return关键字
        let fn5 =(a,b)=>{  
            console.log(a,b);
            return a+b;
        }
        console.log(fn5(100,200)); //300


        // 2.省略return关键字  (函数体只有一个返回值,大括号也需要省略)
        // let fn6 =(a,b)=>{  
        //    a+b;  //a+b执行了一下
        // }
        // console.log(fn6(1000));


        let fn6 =(a,b)=> a+b;  
        console.log(fn6(1000,200));


        // 3.返回一个对象
        let fn7 = ()=>({name:"哈哈"});  //返回一个对象（编程中区分不了是函数的大括号还是对象，出现混乱问题，这个时候我们就可以加()提升优先级）
        
        console.log(fn7());

    </script>
</body>
</html>